namespace System.Transactions.Abstractions
{
    public interface IPromotableSinglePhaseTransactionParticipant : ITransactionPromoterAbstraction
    {
        // Summary:
        //     Notifies a transaction participant that enlistment has completed successfully.
        //
        // Exceptions:
        //   System.Transactions.TransactionException:
        //     An attempt to enlist or serialize a transaction.
        void Initialize();
        //
        // Summary:
        //     Notifies an enlisted object that the transaction is being rolled back.
        //
        // Parameters:
        //   singlePhaseEnlistment:
        //     A System.Transactions.SinglePhaseEnlistment object used to send a response
        //     to the transaction manager.
        void Rollback(ISinglePhaseEnlistment singlePhaseEnlistment);
        //
        // Summary:
        //     Notifies an enlisted object that the transaction is being committed.
        //
        // Parameters:
        //   singlePhaseEnlistment:
        //     A System.Transactions.SinglePhaseEnlistment interface used to send a response
        //     to the transaction manager.
        void SinglePhaseCommit(ISinglePhaseEnlistment singlePhaseEnlistment);
    }
}
